var app = angular.module('horarioPersonalizado', []);

app.controller('horarioPersonalizadoController', [ '$scope', function($scope) {
	var horarioCtrl = this;

	this.curso = {};
	this.semestre = {};
	this.aluno = {};
	this.horario = getHorarioVazio();
	this.disciplinasCurso = [];
	this.isInsert = true;

	this.getAluno = function() {
		
		showLoading();
		$.ajax({
			url : "${pageContext.request.contextPath}/aluno/getAluno",
			method : "POST",
			data : {
				"prontuario" : '${prontuario}'
			}
		}).success(function(aluno, textStatus, jqXHR) {
			// Cria as opções do combobox
			$scope.$apply(function() {
				horarioCtrl.disciplinasCurso = new Disciplinas(aluno.semestre.curso.codigo);
			});
			
			$scope.$apply(function() {
				// atribui aos combobox e à página o que está salvo no banco
				horarioCtrl.aluno.prontuario = aluno.prontuario;
				horarioCtrl.aluno.nome = aluno.nome;
				horarioCtrl.semestre = aluno.semestre;
				setDescricaoSemestre(horarioCtrl.semestre);
				horarioCtrl.curso = aluno.semestre.curso;

				/*
				 * Usa o horario do aluno por preferência, mas se ele não
				 * existir, usa o do semestre
				 */
				if (aluno.horario != undefined) {
					horarioCtrl.isInsert = false;
					horarioCtrl.horario = aluno.horario;
					
					
				} else if (aluno.semestre.horario != undefined) {
					horarioCtrl.isInsert = true;
					horarioCtrl.horario = aluno.semestre.horario;
					
					
				} else {
					horarioCtrl.isInsert = true;
					
				}
			});
			

			hideLoading();
		}).error(function(jqXHR, textStatus, errorThrown) {
			hideLoading();
			consoleError("Carregar Aluno", errorThrown);
		});

	};
	// Inicializa aluno
	this.getAluno();

	this.persistirHorario = function() {
		if (this.horario.codigo != undefined && this.horario.codigo != 0) {
			this.updateHorario();
		} else {
			this.insertHorario();
		}
	};

	this.insertHorario = function() {
		
		showLoading();
		$.ajax({
			url : "${pageContext.request.contextPath}/aluno/insertHorario",
			method : "POST",
			data : {
				"horarioJson" : JSON.stringify(horarioCtrl.horario)
			}
		}).success(function(data, textStatus, jqXHR) {
			hideLoading();
			if (data == "") {
				window.location = "${pageContext.request.contextPath}/impressao/";
			} else {
				alert(data);
			}

		}).error(function(jqXHR, textStatus, errorThrown) {
			hideLoading();
			consoleError("Insert Horario", errorThrown);
		});

	};

	this.updateHorario = function() {
		
		
		showLoading();
		$.ajax({
			url : "${pageContext.request.contextPath}/aluno/updateHorario",
			method : "POST",
			data : {
				"horarioJson" : JSON.stringify(horarioCtrl.horario)
			}
		}).success(function(data, textStatus, jqXHR) {
			hideLoading();
			if (data == "") {
				window.location = "${pageContext.request.contextPath}/impressao/";
			} else {
				alert(data);
			}
		}).error(function(jqXHR, textStatus, errorThrown) {
			hideLoading();
			consoleError("Update Horario", errorThrown);
		});

	};

	this.toggleDisciplina = function(idDisc) {
		
		showLoading();
		$.ajax({
			url : "${pageContext.request.contextPath}/aluno/toggleDisciplina",
			method : "POST",
			data : {
				"idDisciplina" : idDisc
			}
		}).success(function(horario, textStatus, jqXHR) {
			hideLoading();
			if (typeof horario == "object") {
				$scope.$apply(function(){
					horarioCtrl.horario = horario;
				});
				
			} else if (typeof horario == "string"){
				alert(horario);
			}
		}).error(function(jqXHR, textStatus, errorThrown) {
			hideLoading();
			consoleError("Adicionar Disciplina", errorThrown);
		});

	};
} ]);

// Carrega as disciplinas do curso num array
Disciplinas = function(idCurso) {
	
	var disciplinas = {};
	showLoading();
	$.ajax({
		url : "${pageContext.request.contextPath}/aluno/getDisciplinas",
		method : "POST",
		async : false,
		data : {
			"idCurso" : idCurso
		},
		success : function(data, textStatus, jqXHR) {
			

			disciplinas = data;
		},
		error : function(jqXHR, textStatus, errorThrown) {
			consoleError("Carregar Disciplinas", errorThrown);
		}
	});

	hideLoading();
	
	return disciplinas;
};
